#ifndef VISTA_EXTERIOR_H_
#define VISTA_EXTERIOR_H_

#include "vista.h"
#include "camlookat.h"
#include "handler.h"
#include "vehiculo.h"

class VistaExterior : public Vista {
   private:
      mutable float x,y,z,dx,dy,dz;
      mutable float ux,uy,uz;

      CamLookAt cam;
      Vehiculo &vehiculo;

   public:
      VistaExterior(Handler& handler, Vehiculo &vehiculo) :
         cam(x, y, z, dx, dy, dz, ux, uy, uz), vehiculo(vehiculo) {
            cam.configEyeFactor(-5, -5, +2);
            cam.configPointFactor(+3, +3, +1);
            cam.configUpFactor(0.2, 0.2, 1);

            Acciones::agregar(handler.signal_specialkey().connect(sigc::mem_fun(vehiculo, &Vehiculo::control)));
         }

      void ver() const {
         vehiculo.posicion(x, y, z, dx, dy, dz);
         vehiculo.direccionArriba(ux, uy, uz);
         cam.ver();
      }
};

#endif
